Game manager with multi-platform api components

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for multi-player video games. In one aspect, a method includes instantiating, at a server, a game instance, the game instance being for a plurality of users, each user associated with a corresponding user device, and wherein a first user device of the corresponding user devices has an operational platform different from an operational platform of a second user device of the corresponding user devices, and providing, from the server to each user device, a game module for the game instance, the game module specific to the operational platform of the user device and including a server application programming interface (API) specific to the operational platform of the user device.

TECHNICAL FIELD

This specification relates to multi-player videogames.

BACKGROUND

Video gaming is a popular past time for many users of computer devices. Users enjoy video games for a variety of reasons—users enjoy being pulled into games with one or more of exciting stories, interactive action, realistic graphics, and competition with other users.

The immersive quality of video games has generally improved as the process of establishing a game between two or more users over a network has become easier. For example, there are currently many video games that are freely available over the Internet and which allow users to play against each other individually, form teams that compete against each other, or allow users to embark on an open-ended quest-like adventure. The video games can range from the relatively complex, e.g., a first-person shooter, with an environment of complex graphics, sound effects and multiple interaction models—to the relatively simple, e.g., chess, with a simple environment of point-and-click commands and a chat box.

The software for the video games can be downloaded over the Internet (or installed from a CD-ROM or DVD). The software typically communicates with a game server that manages the game state and user statistics for game players.

The variety and types of user devices on which video games can be played has exploded over the last decade. These user devices can support one or more different operating environments in which video games can be played. Examples of these operating environments include Adobe Flash (“flash”), Java 2 Platform Micro Edition (J2ME), and Binary Run-time Environment for Wireless (“Brew”), to name just a few. Unfortunately, many on-line games are segmented by the platform for which they are developed. For example, a particular game may be developed for a flash-based operational environment and a J2ME-based operational environment. The flash-based game version typically only facilitates multiplayer interaction with other instances of the flash-based game version, and the J2ME version likewise only facilitates multiplayer interaction with other instances of the J2ME versions.

SUMMARY

In general, one innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of instantiating, at a server, a game instance, the game instance being for a plurality of users, each user associated with a corresponding user device, and wherein a first user device of the corresponding user devices has an operational platform different from an operational platform of a second user device of the corresponding user devices; providing, from the server to each user device, a game module for the game instance, the game module specific to the operational platform of the user device and including a server application programming interface (API) specific to the operational platform of the user device, each server API converting one or more operational platform data types of the operational platform of the user device to which it is provided to one or more server data types of the server, and converting one or more server data types of the server to the one or more operational platform data types of the user device to which it is provided; for each user device, providing data for the game instance to the user device, the data formatted in the one or more server data types, and receiving data from the game instance from the user device, the data formatted in the one or more server data types by the server API provided to the user device. Other embodiments of this aspect include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.

Particular embodiments of the subject matter described in this specification can be implemented to realize one or more of the following advantages. A single game instance in a game server can be instantiated for two or more user devices, wherein each user device has a different operational platform for the game module. Accordingly, segmenting of a gaming population by operational platforms is minimized or eliminated. Game modules and corresponding APIs for existing games can be developed and deployed for new operational platforms to capture a new user segment while still maintaining the existing user segments for the game, thus increasing the return on investment for incremental expansion of a game module to a new operational platform. Game data can be transferred to the user devices in a common format, and data conversion to operational platform data types can occur at the user device by means of the server API at the device, thus minimizing or eliminating cross-platform processing at the game server. Logic for determining identifying data of a device can be tailored to the device according to the server API type provided to the device, thus providing for efficient collection of data identifying a user, and preferably in anonymized form.

The details of one or more embodiments of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a game server in data communication with user devices.

FIG. 2 is a block diagram of the game server in data communication with user devices for a particular game instance.

FIG. 3 is a block diagram of the game server in data communication with a server database.

FIG. 4 is a block diagram of a game server in data communication with additional elements by means of an extension connector.

FIG. 5 is a flow diagram of an example process for managing a game instance in a game server.

FIG. 6 is a flow diagram of an example process for updating game data.

FIG. 7 is a flow diagram of an example process for receiving updated game data.

FIG. 8 block diagram of a programmable processing system.

Like reference numbers and designations in the various drawings indicate like elements.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of a game server 100 in data communication with user devices 110, 122, 124, 134 and 136. The game server 100 can, for example, be implemented in one or more server computers in data communication with a wide area network 102, such as the Internet.

The user devices 110, 122, 124, 134 and 136 communicate with the game server 100 through the wide area network 102 and, optionally, one or more additional networks or network protocols. For example, the device 110 may be a personal computer connected to an Internet service provider, while the devices 122 and 124 may be wirelessly enabled devices in data communication with a wireless access point 120. The device 124 can, for example, be a personal computer, while the device 122 can be a mobile communication device that communicates over the same wireless protocol as the personal computer 124.

Other wireless devices, such as devices 134 and 136, that are configured to communicate directly over a wireless network 132 according to a wireless network protocol, e.g., a GSM, GPRS, 3G or 4G network, are in data communication with the data server 100 by means of a gateway 130, which is a network node equipped for interfacing with another network that uses different protocols. Other communication protocols can also be used for other wireless network types.

Each of the devices 110, 122, 124, 134 and 136 can have different operational platforms for a game module provided by the game server. As used herein, the term “operational platform” refers to the platform or platform edition in which a game module is executed (or interpreted) on a particular device. The operational platform does not necessarily refer to the operating system of the device, however. For example, two devices with the same operating system may nevertheless have different operational platforms for a game module, e.g., a flash environment on a first user device and a J2ME on a second user device utilizing a J2ME virtual machine.

To facilitate a multiplayer game instance for different operational platforms (flash, J2ME, etc.), the game server 100 provides a game module for a game instance to each device. The game module provided to each device is specific to the operational platform of the device and, when executed, creates a game environment on the device. An example game environment is a user interface that allows a user to participate in the game instance.

FIG. 2 is a block diagram of the game server 100 in data communication with user devices for a particular game instance 206. In FIG. 2, n user devices are represented by the game n game modules 200-1 . . . 200-n that have been provided by the game server 100. As used herein, a game instance refers to the logical association of data and interaction for a particular game for particular users participating in the game. Typically, the interactions of users are shared only within a game instance. For example, a game instance of chess is the series of moves taken by two users playing respective opposing sides.

The game modules 200-1 . . . 200-n are each specific to the device to the operational platform of the device to which they are provided, and each includes a respective server application programming interface (API) 202-1 . . . 202-n specific to the operational platform of the device. For example, the game module 200-1 and API 202-1 may be specific to a J2ME operational platform, while the game module 200-n and API 200-n may be specific to a flash operational environment.

The game server 100 provides data transmission and handling for the game instance 206, and performs actions and decisions connected with the game logic. To facilitate the process of data from multiple operational platforms, the data converted to one or more server data types by the server APIs 202. At each device, the respective server API 202 manages the connection with game server 100, data exchange with the game server 100, and converting operational platform specific data types to and from the base data types of the game server 100.

For example, each game server API 202 converts one or more operational platform data types of the operational platform of the device to which it is provided to one or more server data types of the server when transmitting data from the device to the server 100. Likewise, each game server API converts one or more server data types of the server 100 to the one or more operational platform data types of the device to which it is provided when receiving data from the game server 100. The APIs 202 thus enable the server 100 to efficiently provide data formatted according to the server data type for the game instance 206 to each user device and to receive data formatted according to the server data type for the game instance 206 from each user device. Each API 202 can also support uninterrupted connection with the game server 100, and various error handling processes.

At the game server 100, a device connector module 204 is configured to manage the initial connection with the devices, identify the operational platform of each device, and provide game modules 200 specific to the operational platforms of the devices. The device connector 204 provides data to and receives data from each of the APIs 202 in the form of the one or more server data types. The device connector 204 can also support uninterrupted connection with the devices, and various error handling processes.

In some implementations, the device connector 204 is configured to request identifiers from the devices based on the server API 202 type provided to the device. Each identifier can be used to uniquely identify the device client and/or user, or, optionally, quasi-uniquely identify the device client and/or user. In some implementations, the term “uniquely identify” means to identify an endpoint uniquely from other endpoints, and does not necessarily mean to identify a particular user by name or other personal information; and the term “quasi-uniquely identify” means to identify an endpoint in a manner that may result in ambiguity of collisions in some situations. For example, if an endpoint is identified by the user agent, and other devices with the same user agent may also be identified with the same identifier, a collision may occur. Other information can be added to reduce the likelihood of collisions, e.g., an IP address can be concatenated or added to the user agent identifier.

In some implementations, the identifying data can be anonymized, e.g., hashed by a collision-resistant hash to derive a non-personally identified value that is nevertheless unique to the particular device (or quasi-unique).

The logic for determining identifying data of a device can be tailored to the device according to the server API type provided to the device. For example, a particular device manufactured by a particular manufacturer, e.g., Device A, may have the following identifiers that can be accessed by or provided to the server API: a device ID, a device serial number, a MAC address of the network interface card, a phone number, and a PIN. Another device, e.g., Device B, may have a different set of identifiers that can be accessed by or provided to the server API: a MAC address, a phone number, and a client side stored identifier (e.g., a cookie).

The device connector 204, which is in data communication with the server APIs 202, requests the following device identifiers from Device A in the following order of priority: device ID, device serial number, MAC address, phone number, then PIN. For Device B, the device connector requests the following device identifiers from Device A in the following order of priority: MAC address, phone number, and client side stored identifier.

An example identifier request logic based on device type and server API is provided in Table 1 below. The device connector 204 requests device identifier data from a device according to the selection logic specific to the server API provided to the device.

TABLE 1 API Selection Logic Device Identifier Type API 202-1 API 202-2 . . . API202-n Device ID X . . . X S/N X . . . X MAC X X . . . X Phone # X . . . X Cookie X . . . X User Agent + IP address X . . . X IP address X . . . X User Agent X X . . . X

By way of example, assume the API 202-1 is for a first type of mobile device; the API 202-2 is for a personal computer device; and the API 202-n is for a mobile device that also has the full functionality of a PC. The device identifiers are requested in descending order, preferably to receive unique identifiers first and receive quasi-unique identifiers only if unique identifiers are not available or provided. The identifiers are optionally hashed upon receipt to protect the identity of the users. The logic above facilitates the initial establishment of a user for a game instance, and can, in some situations, decrease initial lag time when instantiating the game instance.

Other API selection logic for additional or few identifiers can also be used.

The operational platform specific APIs 202 and the device connector 204 allow developers to abstract away from working with low level data transferring on an operational platform specific basis. This allows developers to devote additional resources to game development, as the game server 100 need only support its specific data types. Examples of these data types include system messages, game information, error messages and media files.

FIG. 3 is a block diagram of the game server 100 in data communication with a server database 220. A server core 101 provides the basic processing and memory management for the game server 100. The server core 100 communicates with the server database 220 by means of a database connector 210. The database 220 is used for game data storage and processing. The database connector 220 supports data connection, requests from the server core 101 and requests processing for the server core 101 (e.g., query formulation), data transferring between the game server 100 and the database 220, data caching for accelerated access by the server core 101, and error handling.

The database 220 stores game data for the game instance(s) 206. For each game instance 206, the game data includes game state data specifying the state of the game instance, and statistics data specifying statistics of the game instance and statistics related to the game instance for each user. Example game state data includes the number of players for the instances and the status of the game instance (e.g., paused, on-going, adjourned), team affiliations, etc. Example statistics data include the status of each user for the game instance, points for each user in the game instance, etc.

The game data can also include user data specifying user specific data for each of the users. Example user data include online time for each user, the record of each user (e.g., wins/losses, experience, etc.), the status of each user (e.g., active, inactive, suspended), and so on.

As the game instance progresses, the database connector 210 can update the game data for the instance 206 and for each user participating in the instance 206.

FIG. 4 is a block diagram of the game server 100 in data communication with additional elements by means of an extension connector 230. The extension connector 230 can be used to establish connections with other game server instance(s) 246 (e.g., multiple servers in a server farm) to exchange data while operating as a logical group. Additionally, the extension connector can facilitate other operations and features, such as game server 100 management and administration tool 244, providing statistics to external applications and/or websites, such as a statistics server 242, security, and providing a website 240 or portal where users can manage their user-specific data.

In some implementations, the extension connector 230 can provide environment data to the device connector module 204 to provide an in-game user management environment through which user data is added or modified by the user. The extension connector 230 can receive user data that is added or modified for each of the users from the device connector module 204, and provide the received user data to the database connector module 210 for storage in the database.

FIG. 5 is a flow diagram of an example process 500 for managing a game instance in a game server. The example process 500 can be implemented in the game server 100.

The process 500 instantiates a game instance for a plurality of users, each user associated with a corresponding user device (502). For example, the game server 100 instantiates a game instance for a plurality of users, and each user is associated with a corresponding user device. At least one of the user devices has an operational platform different from an operational platform of another of the user devices.

The process 500 provides to each user device a game module and a server application programming interface (API) specific to the operational platform of the user device (504). Each server API provided by the game server 100 converts one or more operational platform data types of the operational platform of the user device to which it is provided to one or more server data types of the server, and converts one or more server data types of the server to the one or more operational platform data types of the user device to which it is provided.

For each user device, the process 500 provides data for the game instance to the user device and receives data from the game instance from the user device (506). For example, for each user device, the game server 100 provides data formatted in the one or more server data types for the game instance to the user device, and also receives data from the game instance from the user device, the data is formatted in the one or more server data types by the server API provided to the user device.

FIG. 6 is a flow diagram of an example process 600 for updating game data. The example process 600 can be implemented in the game server 100.

The process 600 stores game data for the game instance in a database (602). For example, the database connector 210 can store game data in the database 220.

The process 600 updates the game data in response to the data provided for the game instance and the data received for the game instance (604). For example, the database connector 210 can store game data in the database 220 that reflect a most current status of a game instance.

FIG. 7 is a flow diagram of an example process 700 for receiving updated game data. The example process 700 can be implemented in the game server 100.

The process 700 provides environment data to the device connector module (702). The environment data defines a user management environment through which user data is added or modified. For example, the device connector module 204 may provide the environment data to a user device, and the user device, using the environment data, generates a user management environment through which the user can update his or her data. Example data the can be updated includes contact information, billing information (if applicable), account management, etc.

The process 700 receives user data for each of the users from the device connector module (704). The user data is user data that is added or modified by use of the user management environment on a device.

The process 700 provides the received user data to the database connector module for storage in the database. For example, the device connector 204 can provide the user data to the database module 210 for storage in the server database.

Embodiments of the subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).

The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.

A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, set top boxes, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.

Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.

An example of a computer in which the above-described techniques can be implemented is shown in FIG. 8, which shows a block diagram of a programmable processing system (system). The system 800 can be utilized to implement the systems and methods described herein. The architecture of the system 800 can, for example, be used to implement a computer client, a computer server, a mobile device, or some other computer device.

The system 800 includes a processor 810, a memory 820, a storage device 830, and an input/output device 840. Each of the components 810, 820, 830, and 840 can, for example, be interconnected using a system bus 850. The processor 810 is capable of processing instructions for execution within the system 800. In one implementation, the processor 810 is a single-threaded processor. In another implementation, the processor 810 is a multi-threaded processor. The processor 810 is capable of processing instructions stored in the memory 820 or on the storage device 830.

The memory 820 stores information within the system 800. In one implementation, the memory 820 is a computer-readable medium. In one implementation, the memory 820 is a volatile memory unit. In another implementation, the memory 820 is a non-volatile memory unit.

The storage device 830 is capable of providing mass storage for the system 800. In one implementation, the storage device 830 is a computer-readable medium. In various different implementations, the storage device 830 can, for example, include a hard disk device, an optical disk device, or some other large capacity storage device.

The input/output device 840 provides input/output operations for the system 800. In one implementation, the input/output device 840 can include one or more of a wired network interface device and/or a wireless interface device. In another implementation, the input/output device can include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard and display devices 860.

While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

Thus, particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous. 

1. A computer-implemented method, comprising: instantiating, at a server, a game instance, the game instance being for a plurality of users, each user associated with a corresponding user device, and wherein a first user device of the corresponding user devices has an operational platform different from an operational platform of a second user device of the corresponding user devices; providing, from the server to each user device, a game module for the game instance, the game module specific to the operational platform of the user device and including a server application programming interface (API) specific to the operational platform of the user device, each server API: converting one or more operational platform data types of the operational platform of the user device to which it is provided to one or more server data types of the server; converting one or more server data types of the server to the one or more operational platform data types of the user device to which it is provided; for each user device: providing data for the game instance to the user device, the data formatted in the one or more server data types; and receiving data from the game instance from the user device, the data formatted in the one or more server data types by the server API provided to the user device.
 2. The method of claim 1, wherein: the first user device is a mobile communication device that directly sends and directly receives data over a wireless network; the second user device is a client computer device that sends and receives data over a wide area network; and the wide area network is in data communication with the wireless network over a wireless gateway device.
 3. The method of claim 1, wherein: the first user device is a first mobile communication device that directly sends and directly receives data over a first wireless network according to a first communication protocol; the second user device is a second mobile communication device that directly sends and directly receives data over a second wireless network according to a second communication protocol; and the first communication protocol is different from the second communication protocol.
 4. The method of claim 3, wherein: the operational platform of the first user device is a Java 2 Platform Micro Edition (J2ME) operational platform; the operational platform of the second user device is a flash operational platform.
 5. The method of claim 1, wherein: the first user device is a first mobile communication device that directly sends and directly receives data over a first wireless network according to a first communication protocol, and the operational platform of the first user device is a Java 2 Platform Micro Edition (J2ME) operational platform; and the second user device is a second mobile communication device that directly sends and directly receives data over a second wireless network according to a second communication protocol, and the operational platform of the second user device is a flash operational platform.
 6. The method of claim 1, further comprising: storing game data for the game instance in a database, the game data including: game state data specifying the state of the game instance; and statistics data specifying statistics of the game instance and statistics related to the game instance for each user; and updating the game data in response to the data provided for the game instance and the data received for the game instance.
 7. The method of claim 6, further comprising storing user data for each of the users in the database, the user data specifying user specific data for each of the users.
 8. The method of claim 1, further comprising requesting, from first and second user devices to which respective game modules for the game instance is provided, device identifier data according to an API selection logic specific to the server API of the respective game modules, the device selection logic defining an order for requesting device identifier type from the server API, and wherein the device selection logic for the server API for the first user device is different from device selection for the server API for the second user device.
 9. A computer storage medium encoded with a computer program, the program comprising instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations comprising: instantiating, at a server, a game instance, the game instance being for a plurality of users, each user associated with a corresponding user device, and wherein a first user device of the corresponding user devices has an operational platform different from an operational platform of a second user device of the corresponding user devices; providing, from the server to each user device, a game module for the game instance, the game module specific to the operational platform of the user device and including a server application programming interface (API) specific to the operational platform of the user device, each server API: converting one or more operational platform data types of the operational platform of the user device to which it is provided to one or more server data types of the server; converting one or more server data types of the server to the one or more operational platform data types of the user device to which it is provided; for each user device: providing data for the game instance to the user device, the data formatted in the one or more server data types; and receiving data from the game instance from the user device, the data formatted in the one or more server data types by the server API provided to the user device.
 10. The computer storage medium of claim 9, wherein: the first user device is a mobile communication device that directly sends and directly receives data over a wireless network; the second user device is a client computer device that sends and receives data over a wide area network; and the wide area network is in data communication with the wireless network over a wireless gateway device.
 11. The computer storage medium of claim 9, wherein: the first user device is a first mobile communication device that directly sends and directly receives data over a first wireless network according to a first communication protocol; the second user device is a second mobile communication device that directly sends and directly receives data over a second wireless network according to a second communication protocol; and the first communication protocol is different from the second communication protocol.
 12. The computer storage medium of claim 11, wherein: the operational platform of the first user device is a Java 2 Platform Micro Edition (J2ME) operational platform; the operational platform of the second user device is a flash operational platform.
 13. The computer storage medium of claim 9, wherein: the first user device is a first mobile communication device that directly sends and directly receives data over a first wireless network according to a first communication protocol, and the operational platform of the first user device is a Java 2 Platform Micro Edition (J2ME) operational platform; and the second user device is a second mobile communication device that directly sends and directly receives data over a second wireless network according to a second communication protocol, and the operational platform of the second user device is a flash operational platform.
 14. The computer storage medium of claim 9, wherein the program comprises instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations further comprising: storing game data for the game instance in a database, the game data including: game state data specifying the state of the game instance; and statistics data specifying statistics of the game instance and statistics related to the game instance for each user; and updating the game data in response to the data provided for the game instance and the data received for the game instance.
 15. The computer storage medium of claim 14, wherein the program comprises instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations further comprising storing user data for each of the users, the user data specifying user specific data for each of the users.
 16. The computer storage medium of claim 9, wherein the program comprises instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations further requesting, from first and second user devices to which respective game modules for the game instance is provided, device identifier data according to an API selection logic specific to the server API of the respective game modules, the device selection logic defining an order for requesting device identifier type from the server API, and wherein the device selection logic for the server API for the first user device is different from device selection for the server API for the second user device.
 17. A system, comprising: a data processing apparatus; and a data store in data communication with the data processing apparatus and storing modules executable by a data processing apparatus, the modules comprising: a device connector module that upon execution causes the data processing apparatus to perform operations comprising: providing, from the server to each user device, a game module for the game instance, the game module specific to the operational platform of the user device and including a server application programming interface (API) specific to the operational platform of the user device, each server API: converting one or more operational platform data types of the operational platform of the user device to which it is provided to one or more server data types of the server; converting one or more server data types of the server to the one or more operational platform data types of the user device to which it is provided; for each user device: providing data for the game instance to the user device, the data formatted in the one or more server data types; and receiving data from the game instance from the user device, the data formatted in the one or more server data types by the server API provided to the user device.
 18. The system of claim 17, wherein: the first user device is a first mobile communication device that directly sends and directly receives data over a first wireless network according to a first communication protocol; the second user device is a second mobile communication device that directly sends and directly receives data over a second wireless network according to a second communication protocol; and the first communication protocol is different from the second communication protocol.
 19. The system of claim 18, wherein: the operational platform of the first user device is a Java 2 Platform Micro Edition (J2ME) operational platform; the operational platform of the second user device is a flash operational platform.
 20. The system of claim 17, wherein the modules further comprise a database connector module that upon execution causes the data processing apparatus to perform operations comprising: storing game data for the game instance in a database, the game data including: game state data specifying the state of the game instance; and statistics data specifying statistics of the game instance and statistics related to the game instance for each user; and updating the game data in response to the data provided for the game instance and the data received for the game instance.
 21. The system of claim 20, wherein the database connector module upon execution caused the data processing apparatus to perform operations further comprising user data for each of the users, the user data specifying user specific data for each of the users.
 22. The system of claim 21, wherein the modules further comprise an extension connector module that upon execution causes the data processing apparatus to perform operations comprising: provide environment data to the device connector module, the environment data defining a user management environment through which user data is added or modified; receiving user data for each of the users from the device connector module, the user data being user data that is added or modified; and provide the received user data to the database connector module for storage in the database. 